# 类的创建、初始化、实例化

#
# # 类的创建、类的实例化
# class GoGamer(object):
#     subject = 'go'
# print(GoGamer)# <class '__main__.GoGamer'>
# kejie = GoGamer()#实例化
# print(kejie)# <__main__.GoGamer object at 0x0000020DA3AE6400>
#
# # 类的初始化
# class GoGamer(object):
#     subject = 'go'  # 属性
#
#     # 类的初始化
#     def __init__(self, obj):  # 初始化时候进行一些绑定；  self指代还未实例化的实例，self换成a也是可以
#         self.p = obj  # 属性
#
# kejie = GoGamer("金勺子")
# print(f"柯洁含着{kejie.p}出生")  # kejie.p
# baoyu = GoGamer("宝玉")
# print(f"宝玉含着{kejie.p}出生")  # kejie.p
# # 柯洁含着金勺子出生
# # 宝玉含着金勺子出生
#
# class ChineseGoGamer(GoGamer):#中国
#     nation = 'cn'
#
# class KoreaGoGamer(GoGamer):  #韩国
#     nation = 'kr'
# kejie=ChineseGoGamer("金勺子")
# print(kejie.subject)
# print(kejie.nation)
# # go
# # cn
#
# class A:
#     def __init__(self):
#         print("init A")
#
# class B:
#     def __init__(self):
#         print("init B")
#
#
#
# #继承
# class C(A, B):
#     def __init__(self):
#         super(A, self).__init__()
#
# c=C()  #init A
# print(C.__mro__)
# #(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
#
# print(C.mro())
# [<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>]
#

#多态-覆盖
# class A:
#     def __init__(self):
#         print("init A")
#
# class B:
#     def __init__(self):
#         print("init B")
#
#
# class C(A, B):
#     def __init__(self):  #覆盖，达到自定义的目的；
#         print("init C")
#
#
# class D(A, B):
#     def a(self,a):
#         return a
#     def a(self,a,b):  #自动去选择相对应的方法
#         return a**b
#
#
# def my_power(a,b):
#     res=a**b
#     return res
